vicefandomcom_it-20200213-history
Action! (linguaggio di programmazione)
L'Action! è un linguaggio di programmazione per gli home computer della Famiglia Atari 8-bit. Integra un editor, un debugger ed un compilatore per il processore MOS 6502. L'Action! fu sviluppato da Clinton Parker e distribuito su cartuccia dalla Optimized Systems Software nel 1983. La sua sintassi è simile a quella dell'ALGOL 68. L'Action! era un linguaggio prestante che permetteva la scrittura di videogiochi e di demo grafiche in un linguaggio di alto livello senza l'uso di codice scritto in linguaggio Assembly. Era disponibile anche una libreria separata di funzioni chiamata Action! Toolkit. L'Action! fu utilizzato per creare almeno due prodotti commerciali: La suite di produttività Homepak ed il programma Games Computers Play. Del linguaggio non ne fu mai fatto un porting per altri sistemi. Tipi di dati Action! ha 3 tipi di dati fondamentali, tutti numerici. BYTE Rappresentato internamente come un intero a 8 bit privo di segno. I valori vanno da 0 a 255. BYTE age=21 ; dichiara la variabile age e la inizializza con il valore 21 BYTE leftMargin=82 ; dichiara la variabile leftmargin e la memorizza all'indirizzo 82 CARDinal Rappresentato come un intero a 16 bit privo di segno. Valori da 0 a 65535. CARD population=$600 ; dichiara la variabile e la memorizza agli indirizzi 1536 e 1537 CARD prevYear, curYear, nextYear ; si utilizza la virgola per dichiarare più variabili INTeger Rappresentato con un intero a 16 bit con segno. Valor da -32768 a 32767. INT veryCold = -10 INT profitsQ1, profitsQ2, ; la dichiarazione di più variabili può spaziare su profitsQ3, profitsQ4 ; più linee di codice Action! ha anche i tipi di dato ARRAY, POINTER ed i tipi di dato definiti dall'utente (user-defined TYPEs). Non sono presenti tipi di dati floating point. Un esempio di tipo di dato definito dall'utente: TYPE CORD=x,y CORD point point.x=42 point.y=23 Parole chiave Una parola chiave o keyword è ogni stringa o simbolo che il compilatore ACTION! riconosce come speciale. Può essere un operatore, un nome di tipo di dato, uno statement oppure una direttiva di compilazione. AND FI OR UNTIL = ( ARRAY FOR POINTER WHILE <> ) BYTE FUNC PROC XOR # . CARD IF RETURN + > [ CHAR INCLUDE RSH - >= ] DEFINE INT SET * < " DO LSH STEP / <= ' ELSE MOD THEN & $ ; ELSEIF MODULE TO % ^ EXIT OD TYPE ! @ Esempio di codice Il seguente esempio rappresenta il codice dell'algoritmo del Crivello di Eratostene scritto in Action!. Per aumentare le prestazioni viene disabilitato il coprocessore grafico ANTIC. BYTE RTCLOK=20, ; addr of sys timer SDMCTL=559 ; DMA control BYTE ARRAY FLAGS(8190) CARD COUNT,I,K,PRIME,TIME PROC SIEVE() SDMCTL=0 ; shut off Antic RTCLOK=0 ; only one timer needed COUNT=0 ; init count FOR I=0 TO 8190 ; and flags DO FLAGS(I)='T ; "'T" is a compiler-provided constant for True OD FOR I=0 TO 8190 ; and flags DO IF FLAGS(I)='T THEN PRIME=I+I+3 K=I+PRIME WHILE K<=8190 DO FLAGS(K)='F ; "'F" is a compiler-provided constant for False K +PRIME OD COUNT +1 FI OD TIME=RTCLOK ; get timer reading SDMCTL=34 ; restore screen PRINTF("%E %U PRIMES IN",COUNT) PRINTF("%E %U JIFFIES",TIME) RETURN Voci correlate * ALGOL 68 Collegamenti esterni * Review of Action! from ANALOG Computing, with benchmarks * Action! info at Retrobits.com * Action! Programming Wiki * Hi-Res Vol. 1, No. 4 - May/June 1984 Lights, Camera, Action! * The ACTION! Archive * Action! language reference * effectus * ACTION! Tutorial Categoria:Famiglia Atari 8-bit Categoria:Linguaggi di programmazione